#ifndef CLASE_H_
#define CLASE_H_

#include <iostream>
#include <fstream>
#include <string>
#include <list>
#include "Socket.h"
#include "Hilo.h"
//#include "Chat.h"
class Clase : public Hilo {
	unsigned int codigo;
	int clave;   // si la clase es publico la clave es cero!
	std::string descripcion;
	std::list<Socket*> socket_alumnos_av;
	std::list<Socket*> sockets_chat;
	std::list<Socket*>::iterator it_socket;
	std::list<std::string> alumnos_inscriptos;
	Socket* socket_instructor_av;
	std::list<std::string> adjuntos;
	unsigned int curso;   // cero si no pertenece a ningstd::string nom_archuno
	bool clase_terminada;
	bool clase_pausada;
	bool fuera_linea;
	bool en_accion;
	//Chat chat;
public:
	Clase(std::string nombre, unsigned int codigo, bool disponible);
	virtual ~Clase();
	unsigned int getCodigo();
	std::string getDescripcion();
    void setSocket_Instr(Socket* socket_instructor);
    void inscribirAlumno(std::string nombre_Alumno);
    std::list<Socket*>* getSocket_alumnos_av();
    void setCodigo(unsigned int codigo);
    void verInscriptos();
    void agregarSocketAlumno_AV(Socket *socket_av);
    void terminarClase();
    void pausarClase();
    void continuarClase();
    bool esta_Terminada();
    void iniciarClase();
    void agregar_socket_chat(Socket* socket);
    void enviar_mensaje_al_chat(std::string nombre_usuario, std::string texto);
    void setCurso(unsigned int curso);
    unsigned int getCurso();
    void agregarArchivo(std::string nom_arch);
    bool buscarAlumno(std::string nombre_alumno);
    std::string Int_toString(unsigned int entero);
    void nombrarVideo(std::string *nom_arch);
    bool getDisponibilidad();
    std::list<std::string>* getAdjuntos();
protected:
    void run();
};

#endif
